package ar.edu.unq.tpi.labso.rochi.agendaRochi.Wicket.apliccion;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import model.Aplicacion.Agenda;

import org.apache.wicket.markup.repeater.data.IDataProvider;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;

import simulaPersistencia.EventoHome;
import clasesPrincipales.Evento;

public class EventoDatProvider implements IDataProvider<Evento>{
	
	private static final long serialVersionUID = 1L;
	private List<Evento>guardaEvento;
	private Evento seleccionado;

	
	public EventoDatProvider(){
		this.guardaEvento = ((EventoHome)Agenda.getHome(Evento.class)).buscarTodos();
	}
	
	public void setSeleccionado(Evento modelObject) {
		this.seleccionado = modelObject;		
	}
	public Evento getSeleccionado() {
		return this.seleccionado;
	}
	
	public List<Evento> todos() {
		return  ((EventoHome)Agenda.getHome(Evento.class)).buscarTodos();
	}

	public void buscar(AproximandoAlEvento example){
				List<Evento>todos = ((EventoHome)Agenda.getHome(Evento.class)).buscarTodos();
		this.guardaEvento = BuscaEntreFechas.search(todos, example);
	}
	public void agregar(Evento defaultModelObject) {
		((EventoHome)Agenda.getHome(Evento.class)).agregar(defaultModelObject);
		this.guardaEvento =((EventoHome)Agenda.getHome(Evento.class)).buscarTodos();
	}
	public void editar(Evento defaultModelObject) {
		((EventoHome)Agenda.getHome(Evento.class)).eliminar(this.seleccionado);
		((EventoHome)Agenda.getHome(Evento.class)).agregar(defaultModelObject);
		this.guardaEvento =((EventoHome)Agenda.getHome(Evento.class)).buscarTodos();
	}
	public void detach() {
	
	}

	public Iterator<? extends Evento> iterator(int first, int count) {
		/* Lista de resultados */
		List<Evento>resultados = new LinkedList<Evento>();
		for(int i= first ; i<count; i++){
			resultados.add(guardaEvento.get(i));
		}
		return resultados.iterator();
	}

	public int size() {
		return guardaEvento.size();
	}

	public IModel<Evento> model(Evento object) {
		return new CompoundPropertyModel<Evento>(object);
	}








}
